package com.hsc.mvc.config;

import com.hsc.mvc.Configuration;
import com.hsc.mvc.exceptions.ConfigFileNotFoundException;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * @author
 * @date 2025-05-18
 * @Description 基于系统配置文件读取配置信息 策略模式中的策略类。ConfigReader 规定了读取配置文件的方法
 */
public class SystemXMLReader extends AbstractXMLReader implements ConfigReader{
    /**
     * 必须重写AbstractXMLReader构造方法 对AbstractReader 构造器进行调用
     * 然后存储 configuration
     * 所有的读取器应该使用统一的配置对象进行存储
     *
     * @param configuration
     */
    public SystemXMLReader(Configuration configuration) {
        super(configuration);
    }

    /**
     * 读取系统配置文件 绝对路径
     * @param systempath
     */
    @Override
    public void read(String systempath) {
        // 使用File 进行读取
        File file = new File(systempath);
        // 如果文件不存在抛出异常
        if (!file.exists()){
            throw new ConfigFileNotFoundException(systempath);
        }

        FileInputStream fileInputStream = null;
        try {
            fileInputStream = new FileInputStream(file);
            super.read(fileInputStream);
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }

    }
}
